MySQL

您所在的位置:网站首页 mysql 运行sql文件 输出日志 MySQL

MySQL

2023-05-22 20:44| 来源: 网络整理| 查看: 265

MySQL-备份+日志:介质故障与数据库恢复 第1关:备份与恢复任务描述相关知识MySQL的恢复机制MySQL的备份与恢复工具编程要求代码参考 第2关 备份+日志:介质故障的发生与数据库的恢复任务描述相关知识编程要求测试说明代码参考

第1关:备份与恢复 任务描述

本关任务: 备份数据库,然后再恢复它。

相关知识

为了完成本关任务,你需要掌握: 1.MySQL的恢复机制; 2.MySQL提供的备份与恢复工具。

MySQL的恢复机制

和大多数DBMS一样,MySQL利用备份、日志文件实现恢复。 具体理论知识在此不详细介绍。

MySQL的备份与恢复工具

MySQL提供了以下工具:

逻辑备份工具:mysqldump物理备份工具:mysqlbackup(仅限商用版)日志工具:mysqlbinlog还原工具:mysql管理工具:mysqladmin

mysqldump 逻辑备份工具,它产生一系的SQL语句,执行这些语句可以重建原数据库的所有对象和数据。缺省输出是控制台,可以通过重定向符号,将其产生的SQL语句集合存入到某个文件。 mysqldump可以备份服务器上的全部数据库,也可以指定某些数据库,或者一个数据库中的某些表。 mysqldump -h127.0.0.1 -uroot -p123123 [options] --databases db_name

–databases 参数用指定数据库名,后面可跟一个或多个数据库的名字,多个数据库名间用空格隔开。 mysqldump命令行工具还可以带若干参数,可选的参数多达几十个,详见官方参考手册。这里只介绍一个: –flush-logs 刷MySQL日志,即重新开始一个日志文件。 重新开始一个新的日志文件,对未来确定哪些日志更有用很有帮助。通常海量备份前的日志文件,其重要性会降低许多,因为有备份在手,除非备份文件出故障,你可能不再需要使用之前的日志文件。

mysqlbackup mysqlbackup是MySQL的物理备份工具,只有付费的商用企业版才有。

mysql mysql是MySQL最重要的客户端管理工具,通常用户都是通过mysql登录到MySQL服务器,进行各种操作。此外,还可以直接通过它执行SQL脚本,还原或创建新库。 mysql -h127.0.0.1 -uroot -p12313 < mydb.sql 这样会直接执行mydb.sql的脚本。通过mysqldump备份出来的脚 本文件,可以用该方法直接用来恢复原数据库。

mysqladmin mysqladmin是MySQL服务器的管理工具,一般用于配置服务器,也可以用来创建或删除数据库: mysqladmin [options] command [command-arg] [command [command-arg]] 常用的command(执行命令)有: create db_name 创建数据库 drop db_name 删除数据库 flush-logs 刷日志 flush-tables 刷表,所有表数据写入磁盘盘 kill id,id,… 杀死某些进程 password new_password 修改(登录者的)登录密码 ping 检查服务器是否可用 status 显示服务器状态 variables 显示各配置参数的值 …

同样,该工具也支持不少可选的参数,详见官方手册。

mysqlbinlog mysqlbinlog是MySQL的日志管理工具。在需要手工介入的故障恢复中,该工具必不可少。当然,平常也可以用它查看日志。 mysqlbinlog mysql-bin.000983 上面的例子,用来查看日志文件mysql-bin.000983。MySQL的日志文件具有相同的前缀,后面的数字是日志文件的顺序。这个前缀是可配置的。比如,也可能是binlog.*,例如: 日志文件

执行日志文件会导致日志所记录的事件重新做一遍,这样可以恢复一个给定时间段的数据,恢复的方法如下: mysqlbinlog [option] binlog_files | mysql -u root -p 介质故障的恢复通常需要把最近一次备份后所有的日志文件全部列上。

mysqlbinlog也支持几十个可选的参数,比如: –disable-log-bin 在通过日志恢复数据库期间不再写日志 –no-defaults 不使用MySQL默认的设置

其它参数数详情请参考官方文档。

MySQL还有其它一些工具(如mysqlimport,mysqlshow等),这里不一一介绍。

编程要求

设有居民人口登记数据库residents,请为该数据库做一次静态的(你一个人独享服务器)海量逻辑备份,备份文件命名为residents_bak.sql。 然后再用该逻辑备份文件恢复数据库。 评测程序并不检查备份文件的名字,你可以用其它文件名,但要保证备份和恢复时,使用同一个文件。备份和恢复的命令分别写在test1_1.sh和test1_2.sh文件中。

test1_1.sh - 作备份test1_2.sh - 作恢复

切莫把两个文件弄反了。

根据提示,在右侧代码文件编辑器填写语句,完成上述要求。缺 省情况下你看到的应该是test1_1.sh。鼠标移至“代码文件”右侧的三角符号,会列出全部代码文件,你可以在两个代码文件间自由切换。当所有代码文件都填写完成后,点击“评测”按钮。

注意:mysql,mysqldump,mysqladmin运行时需提供登录用户名和密码,由于不是在交互式环境中使用这些工具,你需要在命令行上给出登录所需要的信息,例如: mysql -h127.0.0.1 -uroot -p123123 但在命令行曝光密码具有极高风险,MySQL会抛出警告信息,故评测程序会通过其它途径提供登录密码,请在命令行省略-p参数。以mysql为例,你只需要这样写即可: mysql -h127.0.0.1 -uroot 测试说明 数据库residents是本来就有的,平台会先运行test1_1.sh来作备份,然后会drop掉residents。再运行test1_2.sh来恢复数据库。最后检查恢复是否成功,如果在每个residents实列上的评测结果,都与预期结果完全一致即过可通关。

开始你的任务吧,祝你成功!

代码参考

test1_1.sh 文件内容

# 你写的命令将在linux的命令行运行 # 对数据库residents作海量备份,备份至文件residents_bak.sql: mysqldump -h127.0.0.1 -uroot --flush-logs --databases residents > residents_bak.sql

test1_2.sh 文件内容

# 你写的命令将在linux的命令行运行 # 利用备份文件residents_bak.sql还原数据库: mysql -h127.0.0.1 -uroot backup/train_bak.sql

test2_2.sh 文件内容

# 这是shell脚本,将在linux命令行上执行 # 命令行上可省略密码的指定 # 请写出利用逻辑备份和日志恢复数据库的命令: mysql -h127.0.0.1 -uroot


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3